Grid Columns এবং Custom Renderer

Web Development - এক্সটিজেএস (ExtJS) - ExtJS Grid Panel এবং Data Management |

ExtJS তে Grid একটি অত্যন্ত শক্তিশালী এবং কাস্টমাইজেবল UI কম্পোনেন্ট যা ডেটা প্রদর্শনের জন্য ব্যবহৃত হয়। Grid Columns এবং Custom Renderers ব্যবহার করে আপনি ডেটাকে আরও রিচ এবং ইন্টারেক্টিভভাবে উপস্থাপন করতে পারেন। গ্রিডের প্রতিটি কলাম ডেটার একটি নির্দিষ্ট অংশ উপস্থাপন করে এবং Custom Renderer ব্যবহার করে সেই কলামের ডেটাকে কাস্টমাইজ করা যায়।


Grid Columns

Grid Columns হলো সেই অংশ যা গ্রিডের ভেতরে ডেটা প্রদর্শন করে। প্রতিটি কলাম একটি নির্দিষ্ট ডেটা ফিল্ডের জন্য তৈরি হয় এবং dataIndex এর মাধ্যমে যে ফিল্ডের ডেটা ওই কলামে প্রদর্শিত হবে তা নির্ধারণ করা হয়।

Grid Columns এর মূল কনফিগারেশন:

  1. text: কলামের শিরোনাম বা লেবেল।
  2. dataIndex: মডেল বা স্টোরের ফিল্ড যার মাধ্যমে ডেটা কলামে প্রদর্শিত হবে।
  3. flex: কলামের প্রস্থকে স্বয়ংক্রিয়ভাবে সামঞ্জস্য করতে ব্যবহার হয়।
  4. width: কলামের দৈর্ঘ্য নির্ধারণ করে।
  5. sortable: কলামের মধ্যে সোর্টিং সক্ষম করে।

গ্রিড কলাম উদাহরণ:

Ext.create('Ext.grid.Panel', {
    title: 'User List',
    store: {
        fields: ['id', 'name', 'email'],
        data: [
            {id: 1, name: 'John', email: 'john@example.com'},
            {id: 2, name: 'Jane', email: 'jane@example.com'}
        ]
    },
    columns: [
        { text: 'ID', dataIndex: 'id', width: 50 },
        { text: 'Name', dataIndex: 'name', flex: 1 },
        { text: 'Email', dataIndex: 'email', flex: 2 }
    ],
    renderTo: Ext.getBody()
});

এখানে, columns এর মধ্যে তিনটি কলাম ডিফাইন করা হয়েছে: ID, Name, এবং EmaildataIndex দ্বারা প্রতিটি কলাম নির্দিষ্ট ডেটা ফিল্ডের সাথে সংযুক্ত।


Custom Renderer (কাস্টম রেন্ডারার)

Custom Renderer ব্যবহার করে আপনি গ্রিড কলামে প্রদর্শিত ডেটাকে কাস্টমাইজ করতে পারেন। এটি একটি ফাংশন যা কলামের ডেটা প্রদর্শনের আগে কাজ করে, এবং আপনি চাইলে ডেটা ফরম্যাট, রঙ, আইকন, বা অন্যান্য কাস্টম UI এলিমেন্ট যুক্ত করতে পারেন।

কাস্টম রেন্ডারার কনফিগারেশন

  • renderer: এটি একটি ফাংশন যা কলামের ডেটাকে কাস্টমাইজ করে।

Custom Renderer উদাহরণ:

Ext.create('Ext.grid.Panel', {
    title: 'User List',
    store: {
        fields: ['id', 'name', 'email', 'status'],
        data: [
            {id: 1, name: 'John', email: 'john@example.com', status: 'Active'},
            {id: 2, name: 'Jane', email: 'jane@example.com', status: 'Inactive'}
        ]
    },
    columns: [
        { text: 'ID', dataIndex: 'id', width: 50 },
        { text: 'Name', dataIndex: 'name', flex: 1 },
        { text: 'Email', dataIndex: 'email', flex: 2 },
        {
            text: 'Status', 
            dataIndex: 'status',
            renderer: function(value) {
                if (value === 'Active') {
                    return '<span style="color:green;">' + value + '</span>';
                } else {
                    return '<span style="color:red;">' + value + '</span>';
                }
            }
        }
    ],
    renderTo: Ext.getBody()
});

এখানে, Status কলামের জন্য একটি custom renderer ব্যবহার করা হয়েছে যা Active স্ট্যাটাসকে সবুজ এবং Inactive স্ট্যাটাসকে লাল রঙে প্রদর্শন করবে।


Renderer Function এর ব্যবহার

renderer ফাংশনটি সাধারণত তিনটি প্যারামিটার গ্রহণ করে:

  1. value: কলামে প্রদর্শিত হওয়া ডেটার মান।
  2. metaData: ডেটার মেটাডেটা, যেমন সেলটি কোথায় রেন্ডার হবে, সেল ক্লাস ইত্যাদি।
  3. record: সেই রেকর্ডের তথ্য যেটি কলামের জন্য প্রদর্শিত হচ্ছে।

আপনি এই প্যারামিটারগুলো ব্যবহার করে কলামের ডেটা কাস্টমাইজ করতে পারবেন।

উদাহরণ:

{
    text: 'Status',
    dataIndex: 'status',
    renderer: function(value, metaData, record) {
        if (value === 'Active') {
            metaData.tdStyle = 'background-color: green; color: white;';
            return value;
        } else {
            metaData.tdStyle = 'background-color: red; color: white;';
            return value;
        }
    }
}

এখানে, কলামের রেন্ডারিং এর সময় metaData এর মাধ্যমে সেলটির ব্যাকগ্রাউন্ড এবং ফন্ট কালার কাস্টমাইজ করা হচ্ছে।


অন্যান্য কাস্টম রেন্ডারিং কার্যক্রম

  1. HTML ফরম্যাটিং: কলামে ডেটাকে HTML ট্যাগের মাধ্যমে ফরম্যাট করা।

    উদাহরণ:

    renderer: function(value) {
        return '<b>' + value + '</b>'; // ডেটা বোল্ড ফন্টে প্রদর্শিত হবে
    }
    
  2. আইকন ব্যবহার: কলামের ডেটাতে আইকন বা চিত্র যোগ করা।

    উদাহরণ:

    renderer: function(value) {
        if (value === 'Active') {
            return '<img src="active_icon.png" /> ' + value;
        } else {
            return '<img src="inactive_icon.png" /> ' + value;
        }
    }
    
  3. কাস্টম স্টাইল: কলামের সেল বা টেক্সট কাস্টম স্টাইল করতে CSS স্টাইল যোগ করা।

    উদাহরণ:

    renderer: function(value) {
        return '<span style="color:blue; font-weight:bold;">' + value + '</span>';
    }
    

সারাংশ

  • Grid Columns: ExtJS গ্রিডে কলামগুলি একটি কম্পোনেন্টের মধ্যে ডেটা উপস্থাপন করে, এবং dataIndex দ্বারা নির্দিষ্ট ডেটা ফিল্ডের সাথে যুক্ত করা হয়।
  • Custom Renderer: গ্রিডের কলামে কাস্টম ডেটা প্রদর্শনের জন্য ব্যবহার করা হয়, যেমন ডেটা ফরম্যাটিং, স্টাইলিং, বা আইকন যোগ করা।
  • Renderer Function: কলামগুলির জন্য কাস্টম রেন্ডারার তৈরি করতে ব্যবহার করা হয়, যা ডেটাকে ইউজার ইন্টারফেসে কাস্টমাইজ করতে সহায়ক।

এভাবে, ExtJS গ্রিডে Grid Columns এবং Custom Renderers ব্যবহার করে আপনি আপনার ডেটা প্রদর্শনকে আরও রিচ, ইন্টারেক্টিভ এবং কাস্টমাইজড করতে পারেন।

Content added By
Promotion